Back to abhikr.com View repository

AF-Bookings is a booking-management app I built to push the current Android stack against a genuinely awkward domain: polymorphic travel segments, partial data, and a user who only wants to know when to leave for the airport. Every claim below is verifiable in the repository: twenty commits, three Gradle modules.

{{ s.title }}
{{ s.note }}

Screens from the running app. Drag a replacement onto any slot to swap it.

The lazy answer is one fat data class with everything nullable, and a UI full of null checks that silently renders nothing when a new segment type appears. That code passes review and then rots.

The interesting question is whether the type system can carry that variety instead of the UI carrying it, so adding a segment type becomes a compile error in every place that needs updating, rather than a blank row in production.

Module graph

Three Gradle modules. Dependencies only point down.

Read the arrows as “depends on”. Nothing points upward, and nothing points into :domain from the framework.

{{ m.name }} {{ m.tag }}
{{ m.note }}
{{ p }}
depends on
also directly
{{ g.title }}
{{ g.body }}
{{ d.n }}

{{ d.title }}

{{ d.code }}
Why

{{ d.why }}

What it buys

{{ d.payoff }}

{{ c.title }}
{{ c.body }}

What I’d change next

{{ n }}

Don’t take my word for any of it.

Twenty commits, three modules, and the whole architecture readable in an afternoon. If you’re evaluating me, this is the fastest way to do it.

Read the source Get in touch
← Back to abhikr.com
© 2026 Abhishek Kumar · abhikr.com